package br.edu.fucapi.posgraduacao.poo2.sgr.model;

import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

/**
 * @class Usuario.java
 * @author Fabio Oliveira
 * @date 11/01/2013
 * @brief Classe utilizada para persistência dos Usuários.
 */

@Entity 
@Table(name = "USUARIO") 
@SequenceGenerator(allocationSize = 1, name = "SEQ_USUARIO", sequenceName = "SEQ_USUARIO")
public class Usuario {

	@Id
	@Column(name = "id_usuario")
	@GeneratedValue(strategy = GenerationType.AUTO, generator = "SEQ_USUARIO")
	private Integer idUsuario;

	@Column(name = "nome_usuario", length = 100, nullable = false, unique = false, insertable = true, updatable = true)	
	private String nomeUsuario;
	
	@Column(name = "login", length = 50, nullable = false, unique = true, insertable = true, updatable = true)	
	private String login;

	@Column(name = "senha", length = 50, nullable = true, unique = false, insertable = true, updatable = true)
	private String senha;

	@ManyToOne
	@JoinColumn(name="id_perfil")
	private Perfil perfil = new Perfil();
	
	@ManyToMany(fetch = FetchType.LAZY)
	@JoinTable(name = "USUARIO_ATIVIDADE", joinColumns = @JoinColumn(name = "id_usuario"),
	inverseJoinColumns = @JoinColumn(name = "id_atividade"))
	private List<Atividade> listaAtividades;

	public Integer getIdUsuario() {
		return idUsuario;
	}
	public void setIdUsuario(final Integer idUsuario) {
		this.idUsuario = idUsuario;
	}
	public String getNomeUsuario() {
		return nomeUsuario;
	}
	public void setNomeUsuario(final String nomeUsuario) {
		this.nomeUsuario = nomeUsuario;
	}
	public String getLogin() {
		return login;
	}
	public void setLogin(final String login) {
		this.login = login;
	}
	public String getSenha() {
		return senha;
	}
	public void setSenha(final String senha) {
		this.senha = senha;
	}
	public Perfil getPerfil() {
		return perfil;
	}
	public void setPerfil(final Perfil perfil) {
		this.perfil = perfil;
	}
	public List<Atividade> getListaAtividades() {
		return listaAtividades;
	}
	public void setListaAtividades(final List<Atividade> listaAtividades) {
		this.listaAtividades = listaAtividades;
	}
}
